#pragma once

#include "BasicEvent.h"
#include "XString.h"


namespace events {

class WindowEvent :	public BasicEvent
{
public:
	WindowEvent(void) : BasicEvent(BasicEvent::EVENT_WINDOWS), _dwStyle((DWORD)0) {}

	WindowEvent(const platform::XString &class_name, const platform::XString &win_name, DWORD style) : BasicEvent(BasicEvent::EVENT_WINDOWS),
		_class_name(class_name), _win_name(win_name), _dwStyle(style)
	{}

	virtual ~WindowEvent(void) {}


public:
	inline const platform::XString & getClassName(void) const { return _class_name; }
	inline const platform::XString & getWindowName(void) const { return _win_name; }
	inline DWORD getStyle(void) const { return _dwStyle(); }


	// implementing ISerializable
public:
	virtual void saveToStream(std::ostream &os) const;
	virtual void readFromStream(std::istream &is);
	virtual void writeDebugInfo(std::ostream &os) const;


private:
	platform::XString _class_name;
	platform::XString _win_name;
	GenericDataType<DWORD> _dwStyle;

};


}  // end namespace